
#ifndef GOMOKU_CORE_GOMOKU_H__
# define GOMOKU_CORE_GOMOKU_H__

namespace gomoku
{
    enum Color { BLACK, WHITE };

    enum Rules { MANDATORY = 0, FIVE_BREAK = 1 << 0, DOUBLE_THREE = 1 << 1 };

    enum PlayerType { HUMAN, CPU };

    struct Move
    {
        Color color;
        unsigned int line;
        unsigned int column;
    };

    struct Match
    {
        Match()
            : rules(MANDATORY), black(HUMAN), white(HUMAN), size(19)
        {}
        Rules rules;
        PlayerType black;
        PlayerType white;
        unsigned int size;
    };

    enum StateID
    {
        NONE_STATE,
        TITLE_SCREEN,
        MATCH_GAME,
    };
}

#endif  // GOMOKU_CORE_GOMOKU_H__
